##题目：自行车赛
##Mike,Ellie,Rohan,Fatma 四个人参加自行车比赛，分别获得1-4名，
##他们每个人骑不同颜色的自行车(红，紫，蓝，绿)。基于以下线索，谁获得了第二名?
##1、Ellie骑紫色的车, Rohan没有骑绿色的车。 
##2、Mike和Ellie不是第一，也不是最后。 (说明Mike和Ellie分别占了第2和第3名)
##3、骑蓝色车的人领先Fatma。(说明Fatma是第四名,Rohan是第一名，且蓝色车为前三名的，即Fatma不为蓝色车)
##4、骑绿色车的人领先骑紫色车的人。（Ellie为第二名时，绿车可为第一名，Ellie第三名时，绿车可为1(Rohan)、2(Mike)名）


from itertools import permutations #引入全排列函数

#四个位置分别代表Mike、Ellie、Rohan、Fatma四个人的车颜色
color=list(permutations([1, 2, 3,4])) #全排列的color可能情况
rank=list(permutations([1, 2, 3,4])) #全排列的rank可能情况
real_color={1:'红色',2:'紫色',3:'蓝色',4:'绿色'}
people={0:'Mike',1:'Ellie',2:'Rohan',3:'Fatma'}
#车颜色(红(1)、紫(2)、蓝(3)、绿(4))
for i in color:
    i=list(i) #方便后续查找蓝色车的索引
    #下面开始对四种情况进行排除
    #根据条件1可知Ellie骑紫色车，Rohan不骑绿色车，不满足则不合条件
    if(i[1]!=2 or i[2]==4):
        continue
    #排名1 2 3 4
    #print('i')
    #print(i,type(i))
    for j in rank:
        j=list(j)
        #根据条件2可知Mike和Ellie占2 3名，如果他们任一个为1或4名就不合条件
        if(j[0]==1 or j[0]==4 or j[1]==1 or j[1]==4):
            continue
        #print('j')
        #print(j)
        #根据条件3可知蓝色车的人领先Fatma（如果蓝色车的人落后F，则不合条件）
        #根据i.index(3)找到当前蓝色车的人的索引
        #print(j,i,i.index(3))
        if(j[i.index(3)]>=j[3]):
            continue
        #print(j)
        #根据条件4,绿色车要领先紫色车
        if(j[i.index(4)]>=j[i.index(2)]):
            continue
        for t in range(4):
            print(people[t]+'骑'+real_color[i[t]]+'车，获得第'+str(j[t])+'名的成绩')
        for t in range(4):
            if(j[t]==2):
                print('故第二名为'+people[t])
    
    
    

